namespace ext.form
{
	using System;
	using System.Runtime.CompilerServices;
	using System.Html;
	using System.Collections;
	
	
	/// <summary>
	/// A grouping container for {@link Ext.form.Checkbox} controls.  Sample usage:  
	/// var myCheckboxGroup = new Ext.form.CheckboxGroup({
	/// id:&apos;myGroup&apos;,
	/// xtype: &apos;checkboxgroup&apos;,
	/// fieldLabel: &apos;Single Column&apos;,
	/// itemCls: &apos;x-check-group-alt&apos;,
	/// // Put all controls in a single column with width 100%
	/// columns: 1,
	/// items: [
	/// {boxLabel: &apos;Item 1&apos;, name: &apos;cb-col-1&apos;},
	/// {boxLabel: &apos;Item 2&apos;, name: &apos;cb-col-2&apos;, checked: true},
	/// {boxLabel: &apos;Item 3&apos;, name: &apos;cb-col-3&apos;}
	/// ]
	/// });
	/// </summary>
	/// <htmlSummary>
	/// &lt;p&gt;A grouping container for {@link Ext.form.Checkbox} controls.&lt;/p&gt;
	/// &lt;p&gt;Sample usage:&lt;/p&gt;
	/// &lt;pre&gt;&lt;code&gt;
	/// var myCheckboxGroup = new Ext.form.CheckboxGroup({
	/// id:&apos;myGroup&apos;,
	/// xtype: &apos;checkboxgroup&apos;,
	/// fieldLabel: &apos;Single Column&apos;,
	/// itemCls: &apos;x-check-group-alt&apos;,
	/// // Put all controls in a single column with width 100%
	/// columns: 1,
	/// items: [
	/// {boxLabel: &apos;Item 1&apos;, name: &apos;cb-col-1&apos;},
	/// {boxLabel: &apos;Item 2&apos;, name: &apos;cb-col-2&apos;, checked: true},
	/// {boxLabel: &apos;Item 3&apos;, name: &apos;cb-col-3&apos;}
	/// ]
	/// });
	/// &lt;/code&gt;&lt;/pre&gt;
	/// </htmlSummary>
	/// <definedin>src\widgets\form\CheckboxGroup.js</definedin>
	[ScriptName("CheckboxGroup")]
	[ScriptNamespace("Ext.form")]
	[Imported()]
	public partial class CheckboxGroup : ext.form.Field
	{
		
		#region Constructors
		/// <summary>Constructor</summary>
		/// <param name="config">Configuration options</param>
		public CheckboxGroup(ext.form.CheckboxGroup_Configuration config)
		{
		}
		
		/// <summary>Constructor</summary>
		public CheckboxGroup()
		{
		}
		#endregion
		
		#region Fields
		/// <summary>
		/// An Array of {@link Ext.form.Checkbox Checkbox}es or Checkbox config objects
		/// to arrange in the group.
		/// </summary>
		/// <definedin>src\widgets\form\CheckboxGroup.js</definedin>
		[ScriptName("items")]
		public System.Array Items;
		
		/// <summary>
		/// Specifies the number of columns to use when displaying grouped
		/// checkbox/radio controls using automatic layout. This config can take several types of values:
		///  &apos;auto&apos; :  The controls will be rendered one per column on one row and the width
		/// of each column will be evenly distributed based on the width of the overall field container. This is the default.   Number :  If you specific a number (e.g., 3) that number of columns will be
		/// created and the contained controls will be automatically distributed based on the value of {@link #vertical}.   Array : Object You can also specify an array of column widths, mixing integer
		/// (fixed width) and float (percentage width) values as needed (e.g., [100, .25, .75]). Any integer values will
		/// be rendered first, then any float values will be calculated as a percentage of the remaining space. Float
		/// values do not have to add up to 1 (100%) although if you want the controls to take up the entire field
		/// container you should do so.
		/// </summary>
		/// <htmlSummary>
		/// Specifies the number of columns to use when displaying grouped
		/// checkbox/radio controls using automatic layout. This config can take several types of values:
		/// &lt;ul&gt;&lt;li&gt;&lt;b&gt;&apos;auto&apos;&lt;/b&gt; : &lt;p class=&quot;sub-desc&quot;&gt;The controls will be rendered one per column on one row and the width
		/// of each column will be evenly distributed based on the width of the overall field container. This is the default.&lt;/p&gt;&lt;/li&gt;
		/// &lt;li&gt;&lt;b&gt;Number&lt;/b&gt; : &lt;p class=&quot;sub-desc&quot;&gt;If you specific a number (e.g., 3) that number of columns will be
		/// created and the contained controls will be automatically distributed based on the value of {@link #vertical}.&lt;/p&gt;&lt;/li&gt;
		/// &lt;li&gt;&lt;b&gt;Array&lt;/b&gt; : Object&lt;p class=&quot;sub-desc&quot;&gt;You can also specify an array of column widths, mixing integer
		/// (fixed width) and float (percentage width) values as needed (e.g., [100, .25, .75]). Any integer values will
		/// be rendered first, then any float values will be calculated as a percentage of the remaining space. Float
		/// values do not have to add up to 1 (100%) although if you want the controls to take up the entire field
		/// container you should do so.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;
		/// </htmlSummary>
		/// <definedin>src\widgets\form\CheckboxGroup.js</definedin>
		[ScriptName("columns")]
		public ext.auto.System_String_Or_System_Number_Or_System_Array Columns;
		
		/// <summary>
		/// True to distribute contained controls across columns, completely filling each column
		/// top to bottom before starting on the next column. The number of controls in each column will be automatically
		/// calculated to keep columns as even as possible. The default value is false, so that controls will be added
		/// to columns one at a time, completely filling each row left to right before starting on the next row.
		/// </summary>
		/// <definedin>src\widgets\form\CheckboxGroup.js</definedin>
		[ScriptName("vertical")]
		public bool Vertical;
		
		/// <summary>
		/// False to validate that at least one item in the group is checked (defaults to true).
		/// If no items are selected at validation time, {@link @blankText} will be used as the error text.
		/// </summary>
		/// <definedin>src\widgets\form\CheckboxGroup.js</definedin>
		[ScriptName("allowBlank")]
		public bool AllowBlank;
		
		/// <summary>
		/// Error text to display if the {@link #allowBlank} validation fails (defaults to &quot;You must
		/// select at least one item in this group&quot;)
		/// </summary>
		/// <definedin>src\widgets\form\CheckboxGroup.js</definedin>
		[ScriptName("blankText")]
		public string BlankText;
		
		/// <summary>Fires when the state of a child checkbox changes.</summary>
		/// <definedin>src\widgets\form\CheckboxGroup.js</definedin>
		[ScriptName("changeEventName")]
		public const string ChangeEventName = "change";
		
		/// <definedin>src\widgets\form\CheckboxGroup.js</definedin>
		[ScriptName("name")]
		public string Name;
		#endregion
		
		#region Methods
		/// <summary>
		/// Runs CheckboxGroup&apos;s validations and returns an array of any errors. The only error by default
		/// is if allowBlank is set to true and no items are checked.
		/// </summary>
		/// <definedin>src\widgets\form\CheckboxGroup.js</definedin>
		/// <returns>Array of all validation errors</returns>
		[ScriptName("getErrors")]
		public System.Array GetErrors()
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>Gets an array of the selected {@link Ext.form.Checkbox} in the group.</summary>
		/// <definedin>src\widgets\form\CheckboxGroup.js</definedin>
		/// <returns>An array of the selected checkboxes.</returns>
		[ScriptName("getValue")]
		public System.Array GetValue()
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>
		/// {@link Ext.form.Checkbox#setValue Set the value(s)} of an item or items
		/// in the group. Examples illustrating how this method may be called:
		/// 
		/// // call with name and value
		/// myCheckboxGroup.setValue(&apos;cb-col-1&apos;, true);
		/// // call with an array of boolean values
		/// myCheckboxGroup.setValue([true, false, false]);
		/// // call with an object literal specifying item:value pairs
		/// myCheckboxGroup.setValue({
		/// &apos;cb-col-2&apos;: false,
		/// &apos;cb-col-3&apos;: true
		/// });
		/// // use comma separated string to set items with name to true (checked)
		/// myCheckboxGroup.setValue(&apos;cb-col-1,cb-col-3&apos;);
		/// 
		/// See {@link Ext.form.Checkbox#setValue} for additional information.
		/// </summary>
		/// <htmlSummary>
		/// {@link Ext.form.Checkbox#setValue Set the value(s)} of an item or items
		/// in the group. Examples illustrating how this method may be called:
		/// &lt;pre&gt;&lt;code&gt;
		/// // call with name and value
		/// myCheckboxGroup.setValue(&apos;cb-col-1&apos;, true);
		/// // call with an array of boolean values
		/// myCheckboxGroup.setValue([true, false, false]);
		/// // call with an object literal specifying item:value pairs
		/// myCheckboxGroup.setValue({
		/// &apos;cb-col-2&apos;: false,
		/// &apos;cb-col-3&apos;: true
		/// });
		/// // use comma separated string to set items with name to true (checked)
		/// myCheckboxGroup.setValue(&apos;cb-col-1,cb-col-3&apos;);
		/// &lt;/code&gt;&lt;/pre&gt;
		/// See {@link Ext.form.Checkbox#setValue} for additional information.
		/// </htmlSummary>
		/// <definedin>src\widgets\form\CheckboxGroup.js</definedin>
		/// <param name="id">The checkbox to check, or as described by example shown.</param>
		/// <param name="value">The value to set the item.</param>
		/// <returns>this</returns>
		[ScriptName("setValue")]
		public ext.form.CheckboxGroup SetValue(object id, bool value)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>
		/// {@link Ext.form.Checkbox#setValue Set the value(s)} of an item or items
		/// in the group. Examples illustrating how this method may be called:
		/// 
		/// // call with name and value
		/// myCheckboxGroup.setValue(&apos;cb-col-1&apos;, true);
		/// // call with an array of boolean values
		/// myCheckboxGroup.setValue([true, false, false]);
		/// // call with an object literal specifying item:value pairs
		/// myCheckboxGroup.setValue({
		/// &apos;cb-col-2&apos;: false,
		/// &apos;cb-col-3&apos;: true
		/// });
		/// // use comma separated string to set items with name to true (checked)
		/// myCheckboxGroup.setValue(&apos;cb-col-1,cb-col-3&apos;);
		/// 
		/// See {@link Ext.form.Checkbox#setValue} for additional information.
		/// </summary>
		/// <htmlSummary>
		/// {@link Ext.form.Checkbox#setValue Set the value(s)} of an item or items
		/// in the group. Examples illustrating how this method may be called:
		/// &lt;pre&gt;&lt;code&gt;
		/// // call with name and value
		/// myCheckboxGroup.setValue(&apos;cb-col-1&apos;, true);
		/// // call with an array of boolean values
		/// myCheckboxGroup.setValue([true, false, false]);
		/// // call with an object literal specifying item:value pairs
		/// myCheckboxGroup.setValue({
		/// &apos;cb-col-2&apos;: false,
		/// &apos;cb-col-3&apos;: true
		/// });
		/// // use comma separated string to set items with name to true (checked)
		/// myCheckboxGroup.setValue(&apos;cb-col-1,cb-col-3&apos;);
		/// &lt;/code&gt;&lt;/pre&gt;
		/// See {@link Ext.form.Checkbox#setValue} for additional information.
		/// </htmlSummary>
		/// <definedin>src\widgets\form\CheckboxGroup.js</definedin>
		/// <param name="id">The checkbox to check, or as described by example shown.</param>
		/// <returns>this</returns>
		[ScriptName("setValue")]
		public ext.form.CheckboxGroup SetValue(object id)
		{
			throw new System.Exception("Imported - not implemented");
		}
		#endregion
		
		#region Events
		/// <summary>Fires when the state of a child checkbox changes.</summary>
		/// <definedin>src\widgets\form\CheckboxGroup.js</definedin>
		[ScriptName("change")]
		public event ext.auto.Delegate_ext_form_CheckboxGroup_And_System_Array Change;
		#endregion
	}
}
